package com.woniu.supermarket.config;

import org.springframework.cache.interceptor.KeyGenerator;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.lang.reflect.Method;


/*
* 自定义键值 进行 redis cache 缓存  1.不保证不重复  2.保证第二此找到得到该键值
* Cacheable 注解用在查询方法上 把查询出来的结果 存储到缓存中
* @Cacheable(value = "grade",key = "#root.methodName+#root.args[0]+#root.args[1]+#root.args[2]")  不用自定义键值
* @Cacheable(value = "grade",keyGenerator = "keyGenerator")
* 相应的service中用
*
* @CacheEvict(value = "grade",allEntries = true  // allEntries :  true  清空当前grade 缓存空间的 所有数据
*
* */
//@Configuration
public class MyGenerateKeyConfig {

    @Bean(value = "keyGenerator")
    public KeyGenerator keyGenerator(){
        return new KeyGenerator() {
            @Override
            public Object generate(Object o, Method method, Object... objects) {
                String s = "";
                if(objects != null && objects.length>0){
                    s += o;
                }

                return o.getClass()+method.getName()+s;
            }
        };
    }
}
